////typeid操作符--获取对象的类型信息
//
//#include <iostream>
//#include <typeinfo>
//using namespace std;
//
//class A {//编译器根据A类信息，将制作一张虚函数表“A"...|A::foo的地址|
//
//};
//class B :public A {//编译器根据B类信息，将制作一张虚函数表“B"...|A::foo的地址
//
//};
//
//int main(void) {
//	B b;//|虚表指针|-->编译器根据B类信息制作的虚函数表
//	A* pa = &b;
//	A& ra = b;
//	cout << "pa指针的目标对象的类型:" << typeid(*pa).name() << endl;//pa->b对所占空间-->虚表指针-->B类虚函数表-->"B"
//	cout << "ra引用的目标对象的类型:" << typeid(ra).name() << endl;//ra->b对所占空间-->虚表指针-->B类虚函数表-->"B"
//
//	int m;
//	const type_info& rty = typeid(m);
//	//1.获取m的类型信息（类名、类大小、类版本...）
//	//2.创建一个type_info类对象
//	//3.将获取到的m的类型信息保存到type_info对象的私有成员变量中
//	//4.返回type_info类对象的常引用
//	
//	string rn = rty.name();
//	cout << "m的类型" << rn << endl;
//
//	const int n = 10;
//	cout << "n的类型" << typeid(n).name() << endl;
//
//	cout << (typeid(m) == typeid(n)) << endl;
//	cout << (typeid(m) != typeid(n)) << endl;
//	return 0;
//}